import * as fs from 'fs';
import * as path from 'path';

const LOG_DIR = path.join(process.cwd(), 'logs');
const PERMISSION_LOG_FILE = path.join(LOG_DIR, 'permission.log');

// 确保日志目录存在
if (!fs.existsSync(LOG_DIR)) {
  fs.mkdirSync(LOG_DIR, { recursive: true });
}

/**
 * 记录权限相关日志
 * @param message 日志消息
 * @param data 附加数据
 */
export function logPermission(message: string, data?: any) {
  const timestamp = new Date().toISOString();
  const logEntry = {
    timestamp,
    message,
    data,
  };
  
  const logLine = JSON.stringify(logEntry) + '\n';
  fs.appendFileSync(PERMISSION_LOG_FILE, logLine);
  
  // 同时输出到控制台
  console.log(`[Permission] ${message}`, data);
}

/**
 * 记录认证相关日志
 * @param message 日志消息
 * @param data 附加数据
 */
export function logAuth(message: string, data?: any) {
  const timestamp = new Date().toISOString();
  const logEntry = {
    timestamp,
    message,
    data,
  };
  
  const AUTH_LOG_FILE = path.join(LOG_DIR, 'auth.log');
  const logLine = JSON.stringify(logEntry) + '\n';
  fs.appendFileSync(AUTH_LOG_FILE, logLine);
  
  // 同时输出到控制台
  console.log(`[Auth] ${message}`, data);
}

/**
 * 记录一般应用日志
 * @param message 日志消息
 * @param data 附加数据
 */
export function logApp(message: string, data?: any) {
  const timestamp = new Date().toISOString();
  const logEntry = {
    timestamp,
    message,
    data,
  };
  
  const APP_LOG_FILE = path.join(LOG_DIR, 'app.log');
  const logLine = JSON.stringify(logEntry) + '\n';
  fs.appendFileSync(APP_LOG_FILE, logLine);
  
  // 同时输出到控制台
  console.log(`[App] ${message}`, data);
} 